diff --git a/drivers/core/device.c b/drivers/core/device.c
index a3dc2ca..758f390 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -395,7 +395,7 @@
 	return dev->uclass_priv;
 }
 
-void *dev_get_parentdata(struct udevice *dev)
+void *dev_get_parent_priv(struct udevice *dev)
 {
 	if (!dev) {
 		dm_warn("%s: null device\n", __func__);
diff --git a/drivers/misc/cros_ec_spi.c b/drivers/misc/cros_ec_spi.c
index 0686925..253d91a 100644
--- a/drivers/misc/cros_ec_spi.c
+++ b/drivers/misc/cros_ec_spi.c
@@ -24,7 +24,7 @@
 int cros_ec_spi_packet(struct udevice *udev, int out_bytes, int in_bytes)
 {
 	struct cros_ec_dev *dev = dev_get_uclass_priv(udev);
-	struct spi_slave *slave = dev_get_parentdata(dev->dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev->dev);
 	ulong start;
 	uint8_t byte;
 	int rv;
@@ -84,7 +84,7 @@
 		     uint8_t **dinp, int din_len)
 {
 	struct cros_ec_dev *dev = dev_get_uclass_priv(udev);
-	struct spi_slave *slave = dev_get_parentdata(dev->dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev->dev);
 	int in_bytes = din_len + 4;	/* status, length, checksum, trailer */
 	uint8_t *out;
 	uint8_t *p;
diff --git a/drivers/mtd/spi/sf_dataflash.c b/drivers/mtd/spi/sf_dataflash.c
index 3111f4f..b2a56da 100644
--- a/drivers/mtd/spi/sf_dataflash.c
+++ b/drivers/mtd/spi/sf_dataflash.c
@@ -577,7 +577,7 @@
  */
 static int spi_dataflash_probe(struct udevice *dev)
 {
-	struct spi_slave *spi = dev_get_parentdata(dev);
+	struct spi_slave *spi = dev_get_parent_priv(dev);
 	struct spi_flash *spi_flash;
 	struct flash_info *info;
 	u8 idcode[5];
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index 954376d..3bf03f7 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -471,7 +471,7 @@
 
 int spi_flash_std_probe(struct udevice *dev)
 {
-	struct spi_slave *slave = dev_get_parentdata(dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev);
 	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
 	struct spi_flash *flash;
 
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index 868df5f..02b557f 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -913,7 +913,7 @@
 #else
 static int fsl_qspi_child_pre_probe(struct udevice *dev)
 {
-	struct spi_slave *slave = dev_get_parentdata(dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev);
 
 	slave->max_write_size = TX_BUFFER_SIZE;
 
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index be4c0a3..b974e84 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -740,7 +740,7 @@
 	struct udevice *bus = dev_get_parent(dev);
 	struct ich_spi_platdata *plat = dev_get_platdata(bus);
 	struct ich_spi_priv *priv = dev_get_priv(bus);
-	struct spi_slave *slave = dev_get_parentdata(dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev);
 
 	/*
 	 * Yes this controller can only write a small number of bytes at
diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
index 6ae45f5..aa4abcc 100644
--- a/drivers/spi/soft_spi.c
+++ b/drivers/spi/soft_spi.c
@@ -200,7 +200,7 @@
 
 static int soft_spi_probe(struct udevice *dev)
 {
-	struct spi_slave *slave = dev_get_parentdata(dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev);
 	struct soft_spi_platdata *plat = dev->platdata;
 	int cs_flags, clk_flags;
 
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index d666272..58388ef 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -124,7 +124,7 @@
 static int spi_child_pre_probe(struct udevice *dev)
 {
 	struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev);
-	struct spi_slave *slave = dev_get_parentdata(dev);
+	struct spi_slave *slave = dev_get_parent_priv(dev);
 
 	/*
 	 * This is needed because we pass struct spi_slave around the place
@@ -282,7 +282,7 @@
 		ret = device_probe(dev);
 		if (ret)
 			goto err;
-		slave = dev_get_parentdata(dev);
+		slave = dev_get_parent_priv(dev);
 		slave->dev = dev;
 	}
 
@@ -291,7 +291,7 @@
 		goto err;
 
 	*busp = bus;
-	*devp = dev_get_parentdata(dev);
+	*devp = dev_get_parent_priv(dev);
 	debug("%s: bus=%p, slave=%p\n", __func__, bus, *devp);
 
 	return 0;
@@ -320,7 +320,7 @@
 	ret = device_get_child_by_of_offset(bus, node, &dev);
 	if (ret)
 		return NULL;
-	return dev_get_parentdata(dev);
+	return dev_get_parent_priv(dev);
 }
 
 /* Compatibility function - to be removed */
diff --git a/drivers/usb/eth/smsc95xx.c b/drivers/usb/eth/smsc95xx.c
index dc8fa88..d4b5ff4 100644
--- a/drivers/usb/eth/smsc95xx.c
+++ b/drivers/usb/eth/smsc95xx.c
@@ -945,7 +945,7 @@
 #ifdef CONFIG_DM_ETH
 static int smsc95xx_eth_start(struct udevice *dev)
 {
-	struct usb_device *udev = dev_get_parentdata(dev);
+	struct usb_device *udev = dev_get_parent_priv(dev);
 	struct smsc95xx_private *priv = dev_get_priv(dev);
 	struct eth_pdata *pdata = dev_get_platdata(dev);
 
@@ -1029,7 +1029,7 @@
 
 int smsc95xx_write_hwaddr(struct udevice *dev)
 {
-	struct usb_device *udev = dev_get_parentdata(dev);
+	struct usb_device *udev = dev_get_parent_priv(dev);
 	struct eth_pdata *pdata = dev_get_platdata(dev);
 	struct smsc95xx_private *priv = dev_get_priv(dev);
 
diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c
index 3c3e082..62d20f0 100644
--- a/drivers/usb/eth/usb_ether.c
+++ b/drivers/usb/eth/usb_ether.c
@@ -19,7 +19,7 @@
 
 int usb_ether_register(struct udevice *dev, struct ueth_data *ueth, int rxsize)
 {
-	struct usb_device *udev = dev_get_parentdata(dev);
+	struct usb_device *udev = dev_get_parent_priv(dev);
 	struct usb_interface_descriptor *iface_desc;
 	bool ep_in_found = false, ep_out_found = false;
 	struct usb_interface *iface;
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 135ef72..c85dbce 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -303,7 +303,7 @@
 
 	ttdev = udev;
 	parent = udev->dev;
-	uparent = dev_get_parentdata(parent);
+	uparent = dev_get_parent_priv(parent);
 
 	while (uparent->speed != USB_SPEED_HIGH) {
 		struct udevice *dev = parent;
@@ -313,9 +313,9 @@
 			return;
 		}
 
-		ttdev = dev_get_parentdata(dev);
+		ttdev = dev_get_parent_priv(dev);
 		parent = dev->parent;
-		uparent = dev_get_parentdata(parent);
+		uparent = dev_get_parent_priv(parent);
 	}
 	parent_devnum = uparent->devnum;
 #else
diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index c66ebb6..7f6a9a6 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -289,7 +289,7 @@
 
 	if (!device_active(parent))
 		return NULL;
-	udev = dev_get_parentdata(parent);
+	udev = dev_get_parent_priv(parent);
 	if (udev->devnum == devnum)
 		return udev;
 
@@ -575,7 +575,7 @@
 	udev->portnr = port;
 	debug("Calling usb_setup_device(), portnr=%d\n", udev->portnr);
 	parent_udev = device_get_uclass_id(parent) == UCLASS_USB_HUB ?
-		dev_get_parentdata(parent) : NULL;
+		dev_get_parent_priv(parent) : NULL;
 	ret = usb_setup_device(udev, priv->desc_before_addr, parent_udev);
 	debug("read_descriptor for '%s': ret=%d\n", parent->name, ret);
 	if (ret)
@@ -638,7 +638,7 @@
 			if (!device_active(dev))
 				continue;
 
-			udev = dev_get_parentdata(dev);
+			udev = dev_get_parent_priv(dev);
 			if (usb_get_port_status(udev, udev->portnr, &status)
 					< 0)
 				/* USB request failed */
@@ -694,7 +694,7 @@
 
 int usb_child_pre_probe(struct udevice *dev)
 {
-	struct usb_device *udev = dev_get_parentdata(dev);
+	struct usb_device *udev = dev_get_parent_priv(dev);
 	struct usb_dev_platdata *plat = dev_get_parent_platdata(dev);
 	int ret;
 
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 307e1a6..ca598aa 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -1119,7 +1119,7 @@
 	if (device_get_uclass_id(dev) == UCLASS_USB)
 		udev = dev_get_uclass_priv(dev);
 	else
-		udev = dev_get_parentdata(dev);
+		udev = dev_get_parent_priv(dev);
 
 	return udev;
 }
@@ -1150,7 +1150,7 @@
 		} else {
 			while (!is_root_hub(hub->parent))
 				hub = hub->parent;
-			uhop = dev_get_parentdata(hub);
+			uhop = dev_get_parent_priv(hub);
 			root_portnr = uhop->portnr;
 		}
 	}
diff --git a/drivers/usb/musb-new/usb-compat.h b/drivers/usb/musb-new/usb-compat.h
index 53fe4ff..1c41e2a 100644
--- a/drivers/usb/musb-new/usb-compat.h
+++ b/drivers/usb/musb-new/usb-compat.h
@@ -82,7 +82,7 @@
 	 */
 	ttdev = udev;
 	parent = udev->dev;
-	uparent = dev_get_parentdata(parent);
+	uparent = dev_get_parent_priv(parent);
 
 	while (uparent->speed != USB_SPEED_HIGH) {
 		struct udevice *dev = parent;
@@ -92,9 +92,9 @@
 			return 0;
 		}
 
-		ttdev = dev_get_parentdata(dev);
+		ttdev = dev_get_parent_priv(dev);
 		parent = dev->parent;
-		uparent = dev_get_parentdata(parent);
+		uparent = dev_get_parent_priv(parent);
 	}
 
 	return (uparent->devnum << 8) | (ttdev->portnr - 1);
@@ -119,12 +119,12 @@
 	 * If these 2 are not the same we are being called from
 	 * usb_scan_device() and udev itself is the parent.
 	 */
-	if (dev_get_parentdata(udev->dev) != udev)
+	if (dev_get_parent_priv(udev->dev) != udev)
 		return udev;
 
 	/* We are being called normally, use the parent pointer */
 	if (device_get_uclass_id(parent) == UCLASS_USB_HUB)
-		return dev_get_parentdata(parent);
+		return dev_get_parent_priv(parent);
 
 	return NULL;
 }
